new Vue({
  el: '#root',

  data: {
    years: [],
    months: [],
    days: [],
    forumNav: 0,
    time: {},
    lunar: {},
    isShowShopModal: false,
    isAuth: false,
  },

  created () {
    this.years = this.getBornYears()
    this.months = this.getBornMonths()
    this.days = this.getBornDays()
    this.setTime()
    setInterval(() => this.setTime(), 30000)
  },

  filters: {
    leftPad (str) {
      return leftPad(str, 2, '0')
    }
  },

  methods: {
    onClickShopModalClose () {
      this.isShowShopModal = false
    },
    onClickShopItem (isAuth) {
      this.isAuth = isAuth
      this.isShowShopModal = true
    },
    getBornYears () {
      const currentYear = new Date().getFullYear()
      const years = []
      for (let i = currentYear; i >= 1900; i --) {
        years.push(i)
      }
      return years
    },
    getBornMonths() {
      const months = []
      for (let i = 1; i <= 12; i ++) {
        months.push(i)
      }
      return months
    },
    getBornDays() {
      const days = []
      for (let i = 1; i <= 31; i ++) {
        days.push(i)
      }
      return days
    },
    setTime () {
      const date = new Date()
      const year = date.getFullYear()
      const month = date.getMonth() + 1
      const day = date.getDate()
      const hours = date.getHours()
      const minutes = date.getMinutes()
      const lunar = LunarCalendar.calendar(year, month).monthData[day - 1]
      this.time = { year, month, day, hours, minutes }
      this.lunar = lunar
    },
    onClickForumNav (id) {
      this.forumNav = id
    },
  }
})

var cache = [
  '',
  ' ',
  '  ',
  '   ',
  '    ',
  '     ',
  '      ',
  '       ',
  '        ',
  '         '
];

function leftPad (str, len, ch) {
  // convert `str` to a `string`
  str = str + '';
  // `len` is the `pad`'s length now
  len = len - str.length;
  // doesn't need to pad
  if (len <= 0) return str;
  // `ch` defaults to `' '`
  if (!ch && ch !== 0) ch = ' ';
  // convert `ch` to a `string` cuz it could be a number
  ch = ch + '';
  // cache common use cases
  if (ch === ' ' && len < 10) return cache[len] + str;
  // `pad` starts with an empty string
  var pad = '';
  // loop
  while (true) {
    // add `ch` to `pad` if `len` is odd
    if (len & 1) pad += ch;
    // divide `len` by 2, ditch the remainder
    len >>= 1;
    // "double" the `ch` so this operation count grows logarithmically on `len`
    // each time `ch` is "doubled", the `len` would need to be "doubled" too
    // similar to finding a value in binary search tree, hence O(log(n))
    if (len) ch += ch;
    // `len` is 0, exit the loop
    else break;
  }
  // pad `str`!
  return pad + str;
}